﻿using System;
using System.Linq;
using System.Collections.Generic;
using SIM.Geo.DA;
using SIM.Geo.BE;
using System.Data;

namespace SIM.Geo.DA
{
    public class DADetalleAvanceLabor : Base
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de DetalleAvanceLabor
        /// </summary>
        /// <returns></returns>
        public List<DetalleAvanceLabor> ListarDetalleAvanceLabor(int codigoAvanceLabor)
        {
            return this.Context.DetalleAvanceLabor.Where(x => x.CodigoAvanceLabor == codigoAvanceLabor).ToList();
        }
        /// <summary>
        /// Método para insertar una DetalleAvanceLabor
        /// </summary>
        /// <param name="DetalleAvanceLabor"></param>
        /// <returns></returns>
        public int InsertarDetalleAvanceLabor(DetalleAvanceLabor detalleAvanceLabor)
        {
            this.Context.DetalleAvanceLabor.AddObject(detalleAvanceLabor);
            this.Context.SaveChanges();
            return detalleAvanceLabor.CodigoAvanceLabor;
        }
        /// <summary>
        /// Método para modificar un DetalleAvanceLabor
        /// </summary>
        /// <param name="DetalleAvanceLabor"></param>
        public void ModificarDetalleAvanceLabor(DetalleAvanceLabor detalleAvanceLabor)
        {
            this.Context.DetalleAvanceLabor.Attach(detalleAvanceLabor);
            this.Context.ObjectStateManager.ChangeObjectState(detalleAvanceLabor, EntityState.Modified);
            this.Context.SaveChanges();

        }
        /// <summary>
        /// Método para eliminar DetalleAvanceLabor
        /// </summary>
        /// <param name="DetalleAvanceLabor"></param>
        public void EliminarDetalleAvanceLabor(DetalleAvanceLabor detalleAvanceLabor)
        {
            this.Context.DetalleAvanceLabor.DeleteObject(detalleAvanceLabor);
            this.Context.SaveChanges();
        }

        /// <summary>
        /// Método que devuelve DetalleAvanceLabor por codigo
        /// </summary>
        /// <param name="codigoDetalleAvanceLabor"></param>
        /// <returns></returns>
        public DetalleAvanceLabor ObtenerDetalleAvanceLabor(int codigoLabor, int codigoPuntoTopoAnterior, int codigoPuntoTopoActual, int codigoAvanceLabor)
        {
            return this.Context.DetalleAvanceLabor.Where(x => x.CodigoLabor.Equals(codigoLabor) && x.CodigoPuntoTopograficoAnterior.Equals(codigoPuntoTopoAnterior) && x.CodigoPuntoTopograficoActual.Equals(codigoPuntoTopoActual) && x.CodigoAvanceLabor.Equals(codigoAvanceLabor)).FirstOrDefault();
        }
        #endregion
    }
}
